Removed use of pre-compiled headers from Symantec projects, because the pre-compiled headers that ship with Symantec 8 are ETO 18 vintage and we need ETO 21 headers to build TradDriverLoaderLib. This means you must update your copy of Symantec to use ETO 21 headers before compiling this sample.
Switched RamINIT.c to use TradDriverLoaderLib. This radically reduces the amount of source in the RamINIT.c file. TradDriverLoaderLib is a library for installing traditional Mac OS device drivers (DRVRs). This library was written to be reused by other device driver writers. You can find the full distribution of TradDriverLoaderLib whereever good sample code is sold.
Removed support for MPW and TPM builds in the official distribution. I’m sorry, but tracking three builds was too much for my poor little brain (and my time budget). When the choice is between “not updating the sample” or “updating it but losing support for alternative development environment”, I hope you understand why I chose the latter.
Radically reorganised the source code. Change the name of RamDisk.h to RamDiskCommon.h. It now only contains declarations that are shared between at least two of the components of the source (INIT, DRVR, cdev). Declarations that are private to a single component are now contained only in that component’s source file.
In the process, I got rid of unnecessary prototypes. Functions that are internal to a module are now “static” and I’ve moved the caller to below the declaration.
I also did a parse through all of the source, removing unused declarations, making the comments a bit more consistent, deleting unused code, and so on. It’s still not as good as I’d like it, but it’s getting there.
Update the sample to use ShowInitIcon, the new definitive way of showing icons at INIT time. You can find the full distribution of ShowInitIcon whereever good sample code is sold.
Recast the original Driver.a file (which contained the assembly language version of the DRVR entry point) as RAMDiskDriverMain.c. This version uses CodeWarrior’s built-in assembler to create the DRVR entry point. The code is shared with AsyncDriverSample.
Sorted out the version numbering code. The INIT code now gets the version number out of the resource fork and passes it to the driver as part of the globals.
1.0d5 rederived “RAMDiskDriverMain.c” from “AsyncDriverMain.c” from AsyncDriverSample 1.0b4. Code now uses address labels in driver header rather than absolute offsets, and sets driver flags using symbolic constants. Also removed C code that sets flags that we couldn't set using the standard CodeWarrior header.